對於 IT 管理者來說,每天要面對的就是海量網路裝置,這些裝置的使用情況與好壞,流量就是最重要的指標,在這麼多的來源數據,我們需要有良好的工具軟體以加速我們掌握最新的情況。
除此之外,各個伺服器所提供多樣的服務,亦需要有自動化的狀態監控系統,才能在發生障礙時即時通知管理者,及早發現及早治療,從而降低系統停止服務的時間。
LibreNMS 是一套開源的網路與服務監控系統,主要以 PHP、MariaDB、SNMP 技術為主進行裝置資料搜集,它所能夠提供的功能如下:
在裝置監測的功能上,LibreNMS 提供了五種機制,分別可以做到不同等級的深入探索。
裝置監測方式
最基本從 ICMP 做裝置是否連線中的檢測,接著以 SNMP 最較為深度的資料採集,進一步可以安裝 Agent 取得更詳細的作業系統發行版本資訊與處理程序等。
針對特定的應用,有提供 Application 功能來對應的效能數據擷取方式,而在不同服務的狀況監控則使用名為 Service 的機制去監視各個服務的運作狀態,而且可以相容 Nagios 的 Plugin 做更多的擴充。
官網文件庫有非常詳細的使用說明,也提供了預先建置好的虛擬機器檔案可以直接下載開機使用,不過本次仍然以 Ubuntu 18.04 做為範例,提供安裝程序:
apt install software-properties-common
add-apt-repository universe
apt update
apt install curl composer fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php7.2-cli php7.2-curl php7.2-fpm php7.2-gd php7.2-json php7.2-mbstring php7.2-mysql php7.2-snmp php7.2-xml php7.2-zip python-memcache python-mysqldb rrdtool snmp snmpd whois
useradd librenms -d /opt/librenms -M -r
usermod -a -G librenms www-data
cd /opt
git clone https://github.com/librenms/librenms.git
chown -R librenms:librenms /opt/librenms
chmod 770 /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
su - librenms
./scripts/composer_wrapper.php install --no-dev
exit
systemctl restart mysql
mysql -uroot -p
CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
exit
# 找到 [mysqld] 區段加入下列
innodb_file_per_table=1
lower_case_table_names=0
# 改完退出編輯器重啟服務
systemctl restart mysql
# 設定正確時區
date.timezone = Asia/Taipei
# 改完退出編輯器重啟服務
systemctl restart php7.2-fpm
# 以下設定貼上後存檔
server {
listen 80;
server_name librenms.example.com;
root /opt/librenms/html;
index index.php;
charset utf-8;
gzip on;
gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /api/v0 {
try_files $uri $uri/ /api_v0.php?$query_string;
}
location ~ \.php {
include fastcgi.conf;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
# 改完退出編輯器重啟服務
rm /etc/nginx/sites-enabled/default
systemctl restart nginx
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro
systemctl restart snmpd
cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
chown -R librenms:librenms /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
安裝來到這裡以後,已經可以進入 LibreNMS 網站開始進行初始安裝設定,請以瀏覽器開啟 http://ip/install.php ,並依據畫面指示一步一步往下操作,即可完成。
在 LibreNMS 最常用的模式,是將裝置以 SNMP 協定加入監控,安裝的方式相當容易,點選功能表的 [Devices] -> [Add Device],即可來到新增裝置的畫面。
加入裝置
最基本的欄位,於 Hostname 中填入 IP 或 FQDN,在 Community 填入 Community String,即可加入,過一會後 LibreNMS 就會自動去爬這個裝置裡有那些資料,慢慢的將資訊給補齊。
所有被加入的裝置都會在裝置清單裡,從功能表的 [Devices] -> [All Devices] 點選後,即可閱覽所有在掌握中的裝置對象。
裝置清單
點選裝置可以進入查看更詳細的資訊內容,下圖是我一台 Synology 的裝置細節,提供許多有用的效能參考資訊,例如 CPU 與網路流量的圖表可以讓我們一眼就看出整個趨勢是否在正常運作範圍,若 CPU 一直持續飆高,就該儘快了解是效能不足,還是中了惡意挖礦程式之類。
裝置細節
再往下捲,依據不同裝置的支援程度,可以看到更多的資訊,例如溫度與風扇運作狀況等等。
更多裝置細節1
若是支援的印表機裝置,甚至可以把各色碳粉量以各種顏色表示存量,以及耗材的使用壽命已達多少百分比的資訊。
更多裝置細節2
在今天的篇幅中,我們成功的以 LibreNMS 建置中央收集各個裝置資訊的監控系統,利用 SNMP 協定將各個裝置的 CPU、MEMORY、NETWORK 等資訊一一收回,並將歷史數據存放以備圖表繪製與查詢使用,可以讓我們做前後比對與發生狀況時的確認。
尤其是圖表功能,一旦把時間軸拉長來看,很多主機的異常其實就能夠在一眼看去就發現,而許多資訊安全的狀況經常就藏在這些可疑的圖表之中。
除了這些功能之外,LibreNMS 還有許多功能可以做為我們資安強化的輔助機制,將在後面的篇幅中持續介紹。
LibreNMS
https://www.librenms.org/
LibreNMS Docs
https://docs.librenms.org/
您好,請問請一下,我安裝成功了,但是我每次在點擊右上角的librenms的圖標時,他導向的頁面就會發生錯誤,查看網址為: [http://librenms.example.com/]
請問這是什麼原因呢?
我已經自行解決了,原因是nginx配置檔裡面,設定錯了,謝謝
恭喜解決啦。
请问,我配置好后,添加设备,提示:
Could not ping XXX.XXX.XXX.XXX(Switch IP Address)
但我已经在交换机中开启了 SNMP
还有,Add Device 时的 Community 设置,指的是 SNMP 中的 Community Name 吗?
1.裝置要開放 ping
2.是的
我可以通过 Ubuntu ping 这台交换机
那應該 ping 這端沒問題,剩下看 snmp 過去是不是有防火牆,或是 protocol/port 不同
請教一下節省哥大大
透過snmp方式爬到ifName、ifDescr、ifAlias的中文(台灣繁體)都會變成"....."
請教大大snmps編碼要怎麼解決呢,感謝大大
不用匯入,它已經內建很多廠牌與型號了
Jason Cheng (節省哥)
謝謝大大回覆
再次請教節省哥大大,關於SNMP爬到的中文字會變成...這個問題,
已有標記被處理了嗎,感謝
= =你snmp的mib要設定
請問如果LibreNMS裝在VM虛擬機裡面,當觸發警報時,可以去觸發虛擬機的蜂鳴器嗎 ?
或是可以去觸發另一台個人電腦的蜂鳴器嗎 ?
請問LibreNMS 上面的畫圖功能,顯示 "error drawing graph" 是什麼沒裝好嗎 ?
rm /etc/nginx/sites-enabled/default
執行後查看並沒有此檔案無法刪除
systemctl restart nginx
執行後錯誤無法重啟
環境是
Ubuntu 22.04.3 LTS
PHP 8.1.2-1ubuntu2.13 (cli)
nginx version: nginx/1.18.0 (Ubuntu)
節省大大:
請問librenms可以收機房的溫度資訊嗎?我在機房有一個溫溼度的設備,之前用cacti都可以收到資料,現在換成librenms後就收不到資料了,這是什麼原因呢?